package com.ssy.lingxi.member.merchant.service.mobile;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.bo.MobileLoginBO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.PhoneVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.MobileLoginVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.MobilePhoneLoginVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.MobileShopTypeVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.MobileSwitchRoleVO;
import com.ssy.lingxi.member.merchant.model.vo.mobile.request.MobileMemberAuthCodeVO;
import org.springframework.http.HttpHeaders;

/**
 * App - 用户登录接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-12-05
 */
public interface IMobileLoginService {

    /**
     * 账号或手机号登录
     * @param headers Http头部信息
     * @param loginVO 接口参数
     * @return 登录用户信息
     */
    Wrapper<MobileLoginBO> accountOrPhoneLogin(HttpHeaders headers, MobileLoginVO loginVO);


    /**
     * 发送“手机号登录”的短信验证码
     * @param headers Http头部信息
     * @param phoneVO 接口参数
     * @return 发送结果
     */
    Wrapper<Void> sendPhoneLoginSmsCode(HttpHeaders headers, PhoneVO phoneVO);

    /**
     * 手机号登录
     * @param headers Http头部信息
     * @param loginVO 接口参数
     * @return 登录用户信息
     */
    Wrapper<MobileLoginBO> phoneLogin(HttpHeaders headers, MobilePhoneLoginVO loginVO);

    /**
     * 重新获取登录用户信息
     * @param headers Http头部信息
     * @return 登录用户信息
     */
    Wrapper<MobileLoginBO> loginWithToken(HttpHeaders headers, MobileShopTypeVO shopTypeVO);

    /**
     * 会员登录后，选择角色
     * @param headers Http头部信息
     * @param roleVO 接口参数
     * @return 登录用户信息
     */
    Wrapper<MobileLoginBO> switchLoginRole(HttpHeaders headers, MobileSwitchRoleVO roleVO);

    /**
     * 业务平台 - 授权码确认登录
     * @param headers HttpHeaders信息
     * @param authCodeVO 接口参数
     * @return 登录结果
     */
    Wrapper<Void> authCodeActive(HttpHeaders headers, MobileMemberAuthCodeVO authCodeVO);
}
